package cl.tinet.reservaCD.usuario;

import java.util.ArrayList;

import cl.tinet.reservaCD.modelo.Usuario;

/**
 * 
 * Clase interface de Usuario, que va ser implementada por UsuarioDaoImpl.
 * 
 * @author Carlos Duque.
 */
public interface UsuarioDao {

    /**
     * Metodo crear un nuevo usuario en la base de datos.
     * 
     * @param usuarioCrear
     *            nuevo usuario en la base de datos.
     */
    void crearUsuario(Usuario usuarioCrear);

    /**
     * Metodo eliminar usuario en la base de datos.
     * 
     * @param usuarioEliminar
     *            usuario que se va a eliminar en la base de datos.
     */
    void eliminarUsuario(Usuario usuarioEliminar);

    /**
     * Metodo que actualiza un usuario en la base de datos.
     * 
     * @param usuarioActualizar
     *            usuario que se va a actualizar.
     */
    void actualizarUsuario(Usuario usuarioActualizar);

    /**
     * Metodo que busca un usuario en la base de datos.
     * 
     * @param usuarioBusqueda
     *            usuario a buscar en la base de datos.
     * @return usuario encontrado en la base de datos
     */
    Usuario buscarUsuario(Usuario usuarioBusqueda);

    /**
     * Metodo que lista los usuario que estan en la base de datos.
     * 
     * @return un lista de usuarios encontrados.
     */
    ArrayList<Usuario> listaUsuario();

    /**
     * Metodo para validar login.
     * 
     * @param usuarioBusqueda
     *            usuario a buscar
     * @return null o el usuario que encontro.
     */
    Usuario validarUsuario(Usuario usuarioBusqueda);

}
